// import Cookie from 'js-cookie';
// import { removeAuthorization } from '@/utils/request';
import { Modal } from 'ant-design-vue';
// 401拦截
const repCommon = {
  /**
   * 响应数据之前做点什么
   * @param response 响应对象
   * @param options 应用配置 包含: {router, i18n, store, message}
   * @returns {*}
   */
  onFulfilled(response, options) {
    const { message } = options;
    if (response.data?.code === 1000 && window.cusRouter?.currentRoute?.path !== '/login') {
      location.href = `${response.data.data.uri}`;

      return response;
    }
    if (response.data?.code === 415) {
      message.error('文件过大');
    }

    if (response.data?.code === 401) {
      if (response.config.url === '/ftm/ftmAirplane/monitor/info' && JSON.parse(response.config.data).isAuto === 1) {
        Modal.warning({
          title: '您的登录会话已经失效',
          content: '请点击下方按钮重新登录',
          centered: true,
          okText: '重新登录',
          onOk() {
            // localStorage.clear();
            // removeAuthorization();
            // window.cusRouter.push('/login');
            // location.reload();
          }
        });
      } else {
        message.error('无此权限');
        // localStorage.clear();
        // removeAuthorization();
        // window.cusRouter.push('/login');
        // setTimeout(() => {
        //   location.reload();
        // }, 500);
      }
    }
    if (response.data?.status === 403) {
      message.error('请求被拒绝');
    }
    if (response.config.url === '/ftm/processing/processingExportExcel' || response.config.url === '/minio/download') {
      return response;
    } else {
      return response.data;
    }
  },
  /**
   * 响应出错时执行
   * @param error 错误对象
   * @param options 应用配置 包含: {router, i18n, store, message}
   * @returns {Promise<never>}
   */
  onRejected(error, options) {
    const { message } = options;
    const { response } = error;
    if (response?.status === 401) {
      message.error('无此权限');
    }
    if (response?.status === 403) {
      message.error('请求被拒绝');
    }
    return Promise.reject(error);
  }
};

const reqCommon = {
  /**
   * 发送请求之前做些什么
   * @param config axios config
   * @param options 应用配置 包含: {router, i18n, store, message}
   * @returns {*}
   */
  onFulfilled(config, options) {
    // const { message } = options;
    // const { url, xsrfCookieName } = config;
    // if (url.indexOf('login') === -1 && xsrfCookieName && !Cookie.get(xsrfCookieName)) {
    //   message.warning('认证 token 已过期，请重新登录');
    // }
    return config;
  },
  /**
   * 请求出错时做点什么
   * @param error 错误对象
   * @param options 应用配置 包含: {router, i18n, store, message}
   * @returns {Promise<never>}
   */
  onRejected(error, options) {
    const { message } = options;
    message.error(error.message);
    return Promise.reject(error);
  }
};

export default {
  request: [reqCommon], // 请求拦截
  response: [repCommon] // 响应拦截
};
